<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>发布订阅模式 class</title>
</head>
<body>
    
</body>
</html>
<script>
    //事件触发器
    class EventEmitter{
        constructor(){
            //{'click':[fn1,fn2],'change':'fn'}
            this.subs = Object.create(null) //没有原型的对象
        }
        //注册事件
        $on(eventType,handler){
            this.subs[eventType] = this.subs[eventType] || []
            this.subs[eventType].push(handler)
        }
        //触发事件
        $emit(eventType){
            this.subs[eventType].forEach(handler=>{
                handler()
            })
        }
    }

    //测试
    let em = new EventEmitter()
    em.$on('dataEvent',function(){console.log('dataEvent')})
    em.$on('dataEvent',function(){console.log('dataEvent')})
    em.$emit('dataEvent')
</script>
